

#include <iostream>
using namespace std;

//int main()
//{
//	int a = 2, b = 5;
//
//	cout << "a = " << a << "\t";
//	cout << "b = " << b << endl;
//	swap(a, b);
//
//	cout << "a = " << a << "\t";
//	cout << "b = " << b << endl;
//
//	return 0;
//}


////template<typename T>
//template <class T>
//T Add(const T& a, const T& b)
//{
//	return a + b;
//}
//
//int Add(const int& a,const int& b)
//{
//	return a + b;
//}
//
//int main()
//{
//	cout << Add(1, 2) << endl;
//
//	int a = 1, b = 2;
//	cout << Add(a, b) << endl;
//	
//	cout << Add(1.1, 2.2) << endl;
//
//	cout << Add<int>(1, 2.2) << endl;
//
//
//	return 0;
//}

template<class T>
class Stack 
{
public:
	Stack(size_t capacity = 4)
	{
		_a = new T[capacity];
		_capacity = capacity;
		_top = 0;
	}

	void Push(const T& x)
	{
		cout << "void Push(const T& x)" << endl;
	}

	~Stack()
	{
		delete _a;
		_top = _capacity = 0;
	}

private:
	T* _a;
	size_t _top;
	size_t _capacity;
};

int main()
{
	Stack<int> st1;
	Stack<double> st2;

	return 0;
}